﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.DAO.SQL.Comercios
{
    public class Catálogo
    {
        //Select Methods Helpers
        public static ECommerce.Model.Comercios.Catálogo[] GetCatálogos(string StoreProcedure, ECommerce.DAO.SQL.Parámetro[] Parámetros)
        {
            ECommerce.Model.Comercios.Catálogo Catálogo = new ECommerce.Model.Comercios.Catálogo();
            Type DynamicType = Catálogo.GetType();
            return ECommerce.DAO.SQL.Comercios.Catálogo.GetCatálogoFromObjects(ECommerce.DAO.SQL.SqlHelper.Get(StoreProcedure, Parámetros, DynamicType));
        }
        public static ECommerce.Model.Comercios.Catálogo[] GetCatálogoFromObjects(ECommerce.Model.Objeto[] Objetos)
        {
            List<ECommerce.Model.Comercios.Catálogo> result = new List<ECommerce.Model.Comercios.Catálogo>();
            ECommerce.Model.Comercios.Catálogo Catálogo;
            foreach (ECommerce.Model.Objeto Objeto in Objetos)
            {
                Catálogo = new ECommerce.Model.Comercios.Catálogo();
                Catálogo = (ECommerce.Model.Comercios.Catálogo)Objeto;
                if (Catálogo != null)
                    if (Catálogo.Id != 0)
                        result.Add(Catálogo);
            }
            return result.ToArray();
        }

        //Select Methods
        public static ECommerce.Model.Comercios.Catálogo GetCatálogoById(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Comercios.Catálogo[] Catálogos = ECommerce.DAO.SQL.Comercios.Catálogo.GetCatálogos("GetCatálogoById", Parámetros.ToArray());
            if (Catálogos != null)
                if (Catálogos.Length > 0)
                    return Catálogos[0];
            return null;
        }
        public static ECommerce.Model.Comercios.Catálogo[] GetCatálogosByIdComercio(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.Comercios.Catálogo.GetCatálogos("GetCatálogosByIdComercio", Parámetros.ToArray());
        }

        //Insert Methods
        public static int SetCatálogo(ECommerce.Model.Comercios.Catálogo Catálogo)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Catálogo.Id);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.SqlHelper.Insert("SetCatálogo", Parámetros.ToArray());
        }
        public static void AddCatálogoToComercio(ECommerce.Model.Comercios.Catálogo Catálogo, ECommerce.Model.Comercios.Comercio Comercio)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdComercio", System.Data.SqlDbType.BigInt, Comercio.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdCatálogo", System.Data.SqlDbType.BigInt, Catálogo.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Insert("AddCatálogoToComercio", Parámetros.ToArray());
        }
    }
}
